#include <gtk/gtk.h> // 头文件

int main(int argc, char *argv[])
{
    gtk_init(&argc, &argv); // 初始化

    // 窗口的操作
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // 创建窗口
    gtk_widget_set_size_request(window, 270, 320);

    // 表格的操作
    GtkWidget *table = gtk_table_new(5, 4, TRUE); // 表格布局，5行4列

    // 行编辑的操作
    GtkWidget *entry = gtk_entry_new();                    // 行编辑的创建
    gtk_entry_set_text(GTK_ENTRY(entry), "2+2=4");         // 给行编辑设置内容
    gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); // 设置行编辑不允许编辑，只做显示用

    // 按钮的操作
    GtkWidget *button0 = gtk_button_new_with_label("0");         // 按钮0
    GtkWidget *button1 = gtk_button_new_with_label("1");         // 按钮1
    GtkWidget *button2 = gtk_button_new_with_label("2");         // 按钮2
    GtkWidget *button3 = gtk_button_new_with_label("3");         // 按钮3
    GtkWidget *button4 = gtk_button_new_with_label("4");         // 按钮4
    GtkWidget *button5 = gtk_button_new_with_label("5");         // 按钮5
    GtkWidget *button6 = gtk_button_new_with_label("6");         // 按钮6
    GtkWidget *button7 = gtk_button_new_with_label("7");         // 按钮7
    GtkWidget *button8 = gtk_button_new_with_label("8");         // 按钮8
    GtkWidget *button9 = gtk_button_new_with_label("9");         // 按钮9
    GtkWidget *button_add = gtk_button_new_with_label("+");      // 加
    GtkWidget *button_minus = gtk_button_new_with_label("-");    // 减
    GtkWidget *button_multiply = gtk_button_new_with_label("*"); // 乘
    GtkWidget *button_divide = gtk_button_new_with_label("/");   // 除
    GtkWidget *button_equal = gtk_button_new_with_label("=");    // 等于
    GtkWidget *button_detele = gtk_button_new_with_label("c");   // 退格

    // 布局操作
    gtk_container_add(GTK_CONTAINER(window), table);                  // 表格放入窗口
    gtk_table_attach_defaults(GTK_TABLE(table), entry, 0, 4, 0, 1);   // 行编辑放入表格
    gtk_table_attach_defaults(GTK_TABLE(table), button0, 0, 1, 4, 5); // 按钮放入表格
    gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button4, 0, 1, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button5, 1, 2, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button6, 2, 3, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button7, 0, 1, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button8, 1, 2, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button9, 2, 3, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button_add, 1, 2, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button_minus, 2, 3, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button_multiply, 3, 4, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button_divide, 3, 4, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button_equal, 3, 4, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button_detele, 3, 4, 1, 2);

    gtk_widget_show_all(window); // 显示所有控件

    gtk_main(); //进入事件循环

    return 0;
}
